package com.apobates.forum.toro.proxy.strategy;

import com.apobates.forum.toro.proxy.MapperMultiAttrExpression;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
/**
 * 聚合策略
 * 适用于: 多对多属性聚合模式
 * @param <E> 目标对象类型
 *
 * @author xiaofanku@live.cn
 * @since 20220517
 */
@FunctionalInterface
public interface MapperManyStrategy<E> {
    /**
     * 策略的执行入口
     * @param selectExprSet 查询表达式集合
     * @param targetObjSet 目标对象集合
     * @param batchQueryArgs 查询参数集合,key=目标对象属性(members,product), value=目标对象的查询参数集合(1,2,3,...)
     */
    void consumer(Set<MapperMultiAttrExpression> selectExprSet, Collection<E> targetObjSet, Map<String, Set<String>> batchQueryArgs);
}
